// main.rs 作为 Crate root 的存在，要列出所有的模块
// 声明 api 模块
// rust 中每个 rs 文件是一个模块
mod api;
mod config;
mod constant;
mod helper;

use std::env;
use std::io::{Error, ErrorKind};

use actix_web::{App, HttpServer};

use api::handler;
use api::handler::hello;

#[actix_web::main]
async fn main() -> std::io::Result<()> {
    println!("run");
    let args: Vec<String> = env::args().collect();
    if args.is_empty() {
        let msg = "More cmd required, try to add run";
        println!("{}", msg);
        return Err(Error::new(ErrorKind::Other, msg));
    }

    // ? 表示成功则返回成功包含的值，否则返回 Err
    HttpServer::new(|| {
        App::new()
            .service(hello::hello)
            .service(handler::check_health)
    }).bind("127.0.0.1:8020")?
    .run()
    .await
}

